package com.study;

public class OperatorDemo4 {
    public static void main(String[] args) {
        int a = 10;
        System.out.println("a:" + a);

        // +=：把左边和右边的数据相加，最后把结果赋值给左边
        a += 20;
        System.out.println("a:" + a);

        // 注意：拓展的赋值运算符底层隐含了强制类型转换
        // 右边的类型是int类型，左边的是short类型，这是java的常量优化机制：在编译时，如果常量在左边类型的范围内，编译通过，反之编译失败
        short s = 1;
        s += 2;
//        s = s + 2;  这两个式子有时候并不等价，这个时候2是int类型，s是short类型，有int参与运算了，整体的结果会提升为int，将int赋值给short类型的变量，需要强制类型转换
        s = (short)(s + 2);
        System.out.println("s:" + s);
    }
}
